package com.zhentao.datacollection.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhentao.datacollection.domain.dto.StorageStatisticsDTO;
import com.zhentao.datacollection.domain.entity.StorageStatistics;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * 入库统计服务接口
 */
public interface StorageStatisticsService extends IService<StorageStatistics> {

    /**
     * 分页查询入库统计列表
     */
    IPage<StorageStatisticsDTO> getStorageStatisticsPage(int pageNo, int pageSize, 
                                                        LocalDate startDate, LocalDate endDate,
                                                        String dataType, String storageStatus);

    /**
     * 获取入库统计概览
     */
    Map<String, Object> getStatisticsOverview(LocalDate startDate, LocalDate endDate);

    /**
     * 获取所有数据类型
     */
    List<String> getAllDataTypes();

    /**
     * 导出入库统计数据
     */
    List<StorageStatisticsDTO> exportStorageStatistics(LocalDate startDate, LocalDate endDate,
                                                      String dataType, String storageStatus,
                                                      int maxRecords);

    /**
     * 计算同比和环比增长率
     */
    void calculateGrowthRates(StorageStatistics statistics);

    /**
     * 格式化增长率文本
     */
    String formatGrowthRate(StorageStatistics current, StorageStatistics lastYear, StorageStatistics lastMonth, boolean isYearOnYear);

    /**
     * 批量更新统计数据的增长率
     */
    void updateGrowthRates(LocalDate startDate, LocalDate endDate);

    /**
     * 生成入库统计数据（用于测试）
     */
    void generateTestData(LocalDate startDate, LocalDate endDate);
}
